home *** CD-ROM | disk | FTP | other *** search
/ PC World 2006 September / PCWorld_2006-09_cd.bin / komercni software / zoner / zps8_cz.exe / {app} / HTMLPublish / compactPHP.zht / main.js < prev    next >
Text File  |  2006-03-22  |  19KB  |  550 lines

  1. function GetPageFN(iPage) {
  2.   if (iPage == 1) {
  3.     return "index.htm";
  4.   }
  5.  
  6.   return "page" + IntToStr(iPage, 5) + ".htm";
  7. }
  8.  
  9. function GetImgPageFN(iFile) {
  10.   if (bUsePHP)
  11.     return "ipage" + IntToStr(iFile, 5) + ".php";
  12.   return "ipage" + IntToStr(iFile, 5) + ".htm";
  13. }
  14.  
  15.  
  16. function GenerateAlbum(cSourcePath, cDestPath)
  17. {
  18.   var iFilesCount = lSelectedFiles.GetCount();
  19.   var iDirsCount = lSelectedDirs.GetCount();
  20.   InitProgress(iDirsCount + iFilesCount);
  21.     
  22.   var iPerPage = iCols*iRows;
  23.   var iPagesCount = Math.ceil(iFilesCount / (iCols*iRows));
  24.  
  25.   //var iLeftColumnWidth=iThnWidth+50;
  26.  
  27.   var iLineStyle = parseInt(cLineStyle);
  28.   var sLineStyle = "solid";
  29.   if (iLineStyle==1)
  30.     sLineStyle="dashed";
  31.  
  32.   var iBackRef = parseInt(cBackRef);
  33.  
  34.   var iNavDivOff=iBlockHeaderFontSize-iFontSize;
  35.   //if (iNavDivOff<0) iNavDivOff=0;
  36.  
  37.   // copy index style
  38.   var tPageCSS = new CTemplate();
  39.   tPageCSS.Load(cSourcePath + "css_index.tpl", 0);
  40.   if (bBackImage)
  41.     tPageCSS.SetReplace("${BACKGROUND}", HEXColor(iBgColor) + " url(" + cBackImageURL + ")");
  42.   else
  43.     tPageCSS.SetReplace("${BACKGROUND}", HEXColor(iBgColor));
  44.   tPageCSS.SetReplace("${TEXTCOLOR}", HEXColor(iTxtColor));
  45.   tPageCSS.SetReplace("${THNTEXTCOLOR}", HEXColor(iThnTxtColor));
  46.   tPageCSS.SetReplace("${LINKCOLOR}", HEXColor(iLnkColor));
  47.   tPageCSS.SetReplace("${SEPARATORCOLOR}", HEXColor(iSeparatorColor));
  48.   tPageCSS.SetReplace("${IMGBORDERCOLOR}", HEXColor(iImgBorderColor));
  49.   tPageCSS.SetReplace("${THNBORDERCOLOR}", HEXColor(iThnBorderColor));
  50.   tPageCSS.SetReplace("${ATHNBORDERCOLOR}", HEXColor(iAThnBorderColor));
  51.   tPageCSS.SetReplace("${PREVIEWCELLWIDTH}", iThnWidth+20);
  52.   tPageCSS.SetReplace("${FOLDERSCOLUMNWIDTH}", iLeftColumnWidth);
  53.   tPageCSS.SetReplace("${IMAGESECTIONOFFSET}", iLeftColumnWidth+20);
  54.   tPageCSS.SetReplace("${IMAGEAREAWIDTH}", iImgWidth);
  55.   tPageCSS.SetReplace("${IMAGEAREAHEIGHT}", iImgHeight);
  56.   tPageCSS.SetReplace("${LINESTYLE}", sLineStyle);
  57.   tPageCSS.SetReplace("${FONTSIZE}", iFontSize);
  58.   tPageCSS.SetReplace("${THMFONTSIZE}", iThnFontSize);
  59.   tPageCSS.SetReplace("${DESCTEXTCOLOR}", HEXColor(iDescTxtColor));
  60.   tPageCSS.SetReplace("${FOOTERFONTSIZE}", iFooterFontSize);
  61.   tPageCSS.SetReplace("${FOLDERBORDERCOLOR}", HEXColor(iFolderBorderColor));
  62.   tPageCSS.SetReplace("${GALDESCFONTSIZE}", iGalDescFontSize);
  63.   tPageCSS.SetReplace("${HEADERFONTSIZE}", iBlockHeaderFontSize);
  64.   tPageCSS.SetReplace("${NAVDIVOFF}", iNavDivOff);
  65.  
  66.   SaveString(cDestPath + "page.css", tPageCSS.Replace(), 0);
  67.  
  68.   var tImageCSS = new CTemplate();
  69.   tImageCSS.Load(cSourcePath + "css_image.tpl", 0);
  70.   if (bBackImage)
  71.     tImageCSS.SetReplace("${BACKGROUND}", HEXColor(iBgColor) + " url(" + cBackImageURL + ")");
  72.   else
  73.     tImageCSS.SetReplace("${BACKGROUND}", HEXColor(iBgColor));
  74.   tImageCSS.SetReplace("${TEXTCOLOR}", HEXColor(iTxtColor));
  75.   tImageCSS.SetReplace("${THNTEXTCOLOR}", HEXColor(iThnTxtColor));
  76.   tImageCSS.SetReplace("${LINKCOLOR}", HEXColor(iLnkColor));
  77.   tImageCSS.SetReplace("${SEPARATORCOLOR}", HEXColor(iSeparatorColor));
  78.   tImageCSS.SetReplace("${IMGBORDERCOLOR}", HEXColor(iImgBorderColor));
  79.   tImageCSS.SetReplace("${THNBORDERCOLOR}", HEXColor(iThnBorderColor));
  80.   tImageCSS.SetReplace("${ATHNBORDERCOLOR}", HEXColor(iAThnBorderColor));
  81.   tImageCSS.SetReplace("${FOLDERSCOLUMNWIDTH}", iLeftColumnWidth);
  82.   tImageCSS.SetReplace("${IMAGESECTIONOFFSET}", iLeftColumnWidth+20);
  83.   tImageCSS.SetReplace("${IMAGEAREAWIDTH}", iImgWidth);
  84.   tImageCSS.SetReplace("${IMAGEAREAHEIGHT}", iImgHeight);
  85.   tImageCSS.SetReplace("${LINESTYLE}", sLineStyle);
  86.   tImageCSS.SetReplace("${FONTSIZE}", iFontSize);
  87.   tImageCSS.SetReplace("${THMFONTSIZE}", iThnFontSize);
  88.   tImageCSS.SetReplace("${FOOTERFONTSIZE}", iFooterFontSize);
  89.   tImageCSS.SetReplace("${HEADERFONTSIZE}", iBlockHeaderFontSize);
  90.   tImageCSS.SetReplace("${NAVDIVOFF}", iNavDivOff);
  91.   tImageCSS.SetReplace("${CMNTTEXTCOLOR}", HEXColor(iCmntTxtColor));
  92.   tImageCSS.SetReplace("${CMNTBLOCKTEXTCOLOR}", HEXColor(iCmntBlockTxtColor));
  93.   tImageCSS.SetReplace("${CMNTFONTSIZE}", iCmntFontSize);
  94.   
  95.  
  96.   SaveString(cDestPath + "image.css", tImageCSS.Replace(), 0);
  97.  
  98.   var tIndexPage= new CTemplate();
  99.   if (iFilesCount>0)
  100.     tIndexPage.Load(cSourcePath + "imgindex.htm", 0);
  101.   else
  102.     tIndexPage.Load(cSourcePath + "galindex.htm", 0);
  103.  
  104.  
  105.   var tFooter= new CTemplate();
  106.   tFooter.Load(cSourcePath + "footer.tpl", 0);
  107.   
  108.   // directories
  109.   if (iDirsCount > 0)
  110.   {
  111.     var tGalNav= new CTemplate();
  112.     if (iFilesCount>0)
  113.         tGalNav.Load(cSourcePath + "galnav.tpl", 0);
  114.     else
  115.         tGalNav.Load(cSourcePath + "galnav2.tpl", 0);
  116.     tGalNav.SetReplace("${GALLERIESHEADER}", cGalleriesHeader);
  117.  
  118.     var pDefFolderImage = new CImage();
  119.     pDefFolderImage.Load(cSourcePath + "folder.png", 0);
  120.      
  121.     var tIndexRow = new CTemplate();
  122.     if (iFilesCount>0)
  123.         tIndexRow.Load(cSourcePath + "galthm.tpl", 0);
  124.     else
  125.         tIndexRow.Load(cSourcePath + "galthm2.tpl", 0);
  126.             
  127.     var cIndexRows = "";
  128.     
  129.     var cDirs = "";
  130.      
  131.     for (var iDir = 1; iDir <= iDirsCount; iDir++)
  132.     {
  133.       SetProgress(iDir);
  134.     
  135.       cDirName = lSelectedDirs.GetAt(iDir-1);
  136.       
  137.       cRelDirName = StripFilePath(cDirName);
  138.       
  139.       CreateDir(cDestPath + cRelDirName);
  140.  
  141.       var pFolderImage = new CImage();
  142.       var bCustomFolderImage = pFolderImage.LoadDirPreview(cDirName, pDefFolderImage);
  143.       pFolderImage.Render(iBgColor);
  144.  
  145.       pFolderImage.Resize(iThnWidth, iThnHeight, GFX_KEEP_ASPECT | GFX_INTERPOLATE);
  146.       
  147.       tIndexRow.SetReplace("${IMGWIDTH}",pFolderImage.GetWidth());
  148.       tIndexRow.SetReplace("${IMGHEIGHT}",pFolderImage.GetHeight());
  149.       pFolderImage.SaveAs(cDestPath + cRelDirName + "\\" + "folder.png", PNGformat, 0, 0);
  150.  
  151.       tIndexRow.SetReplace("${GALPATH}", cRelDirName + "/index.htm");
  152.       tIndexRow.SetReplace("${GALTHUMB}", cRelDirName + "/" + "folder.png");
  153.       tIndexRow.SetReplace("${GALTITLE}", ReplaceExifStrings("{T}", cDirName, cDirName));
  154.       tIndexRow.SetReplace("${GALDESC}", ReplaceExifStrings("{D}", cDirName, cDirName));
  155. //      tIndexRow.SetReplace("${INDEX_DESC}", ReplaceExifStrings("{D}", cDirName, cDirName));
  156.       
  157.       pFolderImage.Close();  
  158.       cIndexRows += tIndexRow.Replace();
  159.     }
  160.     
  161.     pDefFolderImage.Close();
  162.     tGalNav.SetReplace("${INDEXES}", cIndexRows);
  163.     tIndexPage.SetReplace("${GALLERIESNAVIGATION}", tGalNav.Replace());
  164.   }
  165.   else
  166.   {
  167.       tIndexPage.SetReplace("${GALLERIESNAVIGATION}", "");
  168.   }
  169.  
  170.   
  171.     // generaty gallery
  172.   
  173.   var tImgFooter= new CTemplate();
  174.   tImgFooter.Load(cSourcePath + "footer.tpl", 0);
  175.  
  176.   var tIndexRow = new CTemplate();
  177.   tIndexRow.Load(cSourcePath + "indexrow.tpl", 0);
  178.  
  179.   var tIndexEntry = new CTemplate();
  180.   tIndexEntry.Load(cSourcePath + "indexentry.tpl", 0);
  181.  
  182.   var tIndexEntryEmpty = new CTemplate();
  183.   tIndexEntryEmpty.Load(cSourcePath + "indexentryempty.tpl", 0);
  184.   
  185.   var tImgPage = new CTemplate();
  186.   tImgPage.Load(cSourcePath + "index.htm", 0);
  187.  
  188.   var tImgTpl = new CTemplate();
  189.   if(bImgUseOriginal)
  190.     tImgTpl.Load(cSourcePath + "imgorig.tpl", 0);
  191.   else
  192.     tImgTpl.Load(cSourcePath + "img.tpl", 0);
  193.  
  194.   var tIndexHeader = new CTemplate();
  195.   tIndexHeader.Load(cSourcePath + "header.tpl", 0);
  196.  
  197.   var tNavPrev = new CTemplate();
  198.   tNavPrev.Load(cSourcePath + "navprev.tpl", 0);
  199.  
  200.   var tCmtForm = new CTemplate();
  201.   tCmtForm.Load(cSourcePath + "cmtform.tpl", 0);
  202.  
  203.   var tNavNext = new CTemplate();
  204.   tNavNext.Load(cSourcePath + "navnext.tpl", 0);
  205.  
  206.   var tNavUp = new CTemplate();
  207.   tNavUp.Load(cSourcePath + "navup.tpl", 0);
  208.  
  209.   var tImgDesc = new CTemplate();
  210.   tImgDesc.Load(cSourcePath + "imgdesc.tpl", 0);
  211.  
  212.   gallerypath = pAlbum.cAlbumRootPath + pAlbum.cCurrentGalleryRelativePath;
  213.   var TitleText=ReplaceExifStrings(cPageTitle, gallerypath, gallerypath);
  214.   var DescriptionText=ReplaceExifStrings(cGalDescription, gallerypath, gallerypath);
  215.   if (TitleText=="")
  216.     TitleText=" ";
  217.  
  218.   var cCol=0; 
  219.   var cRow=0; 
  220.   
  221.   var RowText="";
  222.   var RowsText="";
  223.   
  224.   var iPos=0;
  225.   var cPage=1;
  226.   if (iFilesCount==0)
  227.   {
  228.     if (DescriptionText!="") 
  229.     {
  230.         var tDesc = new CTemplate();
  231.         tDesc.Load(cSourcePath + "gallerydesc.tpl", 0);
  232.         tDesc.SetReplace("${DESCRIPTIONHEADER}", iGalDescriptionHeader);
  233.         tDesc.SetReplace("${DESCRIPTIONTEXT}", DescriptionText);
  234.         tIndexPage.SetReplace("${GALLERYDESCRIPTION}",tDesc.Replace());
  235.     } 
  236.     else
  237.         tIndexPage.SetReplace("${GALLERYDESCRIPTION}","");
  238.     tIndexHeader.SetReplace("${PAGETITLE}", TitleText);
  239.     tIndexPage.SetReplace("${GALLERYTITLE}",TitleText);
  240.     tIndexPage.SetReplace("${HEADER}",tIndexHeader.Replace());
  241.     tFooter.SetReplace("${FOOTER_TEXT}", ReplaceExifStrings(txtFooter, "", ""));
  242.     tIndexPage.SetReplace("${FOOTER}",tFooter.Replace());
  243.  
  244.     var cNavigationText="<a href=\"../\">"+tNavUp.Replace()+"</a>";
  245.     if (pAlbum.bIsCurrentGalleryRootGallery)
  246.     {
  247.         if (iBackRef==2)
  248.         {
  249.             cNavigationText="<a href=\"../\">"+tNavUp.Replace()+"</a>";
  250.         }
  251.         else
  252.             if (iBackRef==3)
  253.             {
  254.                 cNavigationText="<a href=\""+cBackRefURL+"\">"+tNavUp.Replace()+"</a>";
  255.             }
  256.             else
  257.             {
  258.                 cNavigationText=" ";
  259.             }
  260.     }
  261.  
  262.     tIndexPage.SetReplace("${NAVIGATION}",cNavigationText);
  263.     SaveString(cDestPath + GetPageFN(1), tIndexPage.Replace(), 0);
  264.     iPos=iPerPage;
  265.   }
  266.   
  267.   if (bUsePHP)
  268.   {
  269.     //CopyFile(cSourcePath+"imgcmtnew.php", cDestPath + "imgcmtnew.php", FIL_OM_OVERWRITE);
  270.     //CopyFile(cSourcePath+"fn.php", cDestPath + "fn.php", FIL_OM_OVERWRITE);
  271.     CopyFile(cSourcePath+"imgcmt1.php", cDestPath + "imgcmt1.php", FIL_OM_OVERWRITE);
  272.     //CopyFile(cSourcePath+"admin.php", cDestPath + "admin.php", FIL_OM_OVERWRITE);
  273.     CopyFile(cSourcePath+"imgcmt2.php", cDestPath + "imgcmt2.php", FIL_OM_OVERWRITE);
  274.     CopyFile(cSourcePath+"remcmt.php", cDestPath + "remcmt.php", FIL_OM_OVERWRITE);
  275.     CopyFile(cSourcePath+"setpass.php", cDestPath + "setpass.php", FIL_OM_OVERWRITE);
  276.     CopyFile(cSourcePath+"getpass.php", cDestPath + "getpass.php", FIL_OM_OVERWRITE);
  277.     // 
  278.     var tPHP = new CTemplate();
  279.     tPHP.Load(cSourcePath + "fn.php", 0);
  280.     SaveString(cDestPath + "fn.php", tPHP.Replace(), 0);
  281.     tPHP.Load(cSourcePath + "admin.php", 0);
  282.     SaveString(cDestPath + "admin.php", tPHP.Replace(), 0); 
  283.     tPHP.Load(cSourcePath + "imgcmtnew.php", 0);
  284.     tPHP.SetReplace("${EMAILNOTIFICATION}","");
  285.     tPHP.SetReplace("${STRIPTAGSDISABLER}","");
  286.     if (bEmailNotify && txtEmailAddress!="")
  287.     {
  288.       var tNotify = new CTemplate();
  289.       tNotify.Load(cSourcePath + "enotify.tpl", 0);
  290.       tNotify.SetReplace("${NOTIFYEMAIL}", txtEmailAddress);
  291.       tPHP.SetReplace("${EMAILNOTIFICATION}",tNotify.Replace());
  292.     }
  293.     if (bHTMLTagsInCmnts)
  294.       tPHP.SetReplace("${STRIPTAGSDISABLER}","if (0)"); 
  295.     SaveString(cDestPath + "imgcmtnew.php", tPHP.Replace(), 0); 
  296.     // password
  297.     var tPassword = new CTemplate();
  298.     tPassword.Load(cSourcePath + "empty", 0);
  299.     tPassword.SetReplace("${DATA}",GetStringMD5(cAdminPassword,CP_UTF8));
  300.     SaveString(cDestPath + "password", tPassword.Replace(), 0);
  301.     // blacklist
  302.     if (cBlacklist!="")
  303.     {
  304.       tPassword.SetReplace("${DATA}",cBlacklist);
  305.       SaveString(cDestPath + "blacklist", tPassword.Replace(), 0);
  306.     }
  307.     CreateDir(cDestPath + "text");
  308.     SetSpecialFile("text", "*.cmt", SSFMOD_KEEPDST);
  309.   }
  310.   
  311.   for (var iFile = 1; iFile <= iFilesCount || iPos<iPerPage; iFile++) {
  312.   
  313.           if (iFile<=iFilesCount)
  314.         {
  315.          SetProgress(iDirsCount + iFile);
  316.           cFileName = lSelectedFiles.GetAt(iFile-1);
  317.  
  318.          cNumFileName = IntToStr(iFile, 5);
  319.          cThnFileName = "thn" + cNumFileName + ".jpg";
  320.          cImgFileName = "img" + cNumFileName + ".jpg";
  321.          cImgPgId = "ipage" + cNumFileName;
  322.          cOrgFileName = "org" + cNumFileName + "." + GetFileExt(cFileName).toLowerCase();
  323.  
  324.         // LOAD FILE
  325.           var pImg = new CImage();
  326.           pImg.Load(cFileName, 0);
  327.         // MAKE IMAGE
  328.           tImgTpl.SetReplace("${IMGWIDTH}",0);
  329.           tImgTpl.SetReplace("${IMGHEIGHT}",0);    
  330.             if (bImgUseOriginal)
  331.             {
  332.                 CopyFile(cFileName, cDestPath + cImgFileName, FIL_OM_OVERWRITE);
  333.             }
  334.             else
  335.             {
  336.                 pImg.Resize(iImgWidth, iImgHeight, GFX_KEEP_ASPECT | GFX_INTERPOLATE);
  337.               tImgTpl.SetReplace("${IMGWIDTH}",pImg.GetWidth());
  338.               tImgTpl.SetReplace("${IMGHEIGHT}",pImg.GetHeight());
  339.                 pImg.SaveAs(cDestPath + cImgFileName, JPGformat, iImgJPEG, 0);
  340.             }
  341.             var imgpos=Math.floor((iImgHeight-pImg.GetHeight())/2);
  342.         // MAKE THUMB
  343.           pImg.Resize(iThnWidth, iThnHeight, GFX_KEEP_ASPECT | GFX_INTERPOLATE);
  344.           
  345.           iCurThmWidth=pImg.GetWidth();
  346.           iCurThmHeight=pImg.GetHeight();
  347.             pImg.SaveAs(cDestPath + cThnFileName, JPGformat, iTNJPEG, 0);
  348.         // CLOSE
  349.             pImg.Close(); 
  350.             
  351.         // GENERATE IMAGE PAGE
  352.               tImgFooter.SetReplace("${FOOTER_TEXT}",ReplaceExifStrings(txtImgFooter, cFileName, cDestPath + cImgFileName));
  353.             tImgPage.SetReplace("${IMAGEHEADERTEXT}",ReplaceExifStrings(cImgHeaderText, cFileName, cDestPath + cImgFileName));        
  354.             tImgPage.SetReplace("${FOOTER}",tImgFooter.Replace());
  355.             tImgPage.SetReplace("${IMAGEFILENAME}",cImgFileName);
  356.             tImgPage.SetReplace("${GALLERYTITLE}",TitleText);
  357.             tImgPage.SetReplace("${INDEXPAGENAME}",GetPageFN(cPage));
  358.             tImgTpl.SetReplace("${IMAGEFILENAME}",cImgFileName);
  359.             tImgPage.SetReplace("${IMGTPL}",tImgTpl.Replace());
  360.             if (cImgDescText!="") {
  361.               tImgDesc.SetReplace("${IMAGEDESCTEXT}",ReplaceExifStrings(cImgDescText, cFileName, cDestPath + cImgFileName));
  362.               tImgPage.SetReplace("${IMAGEDESCTEXT}",tImgDesc.Replace());
  363.             }
  364.             else
  365.             {
  366.                 tImgPage.SetReplace("${IMAGEDESCTEXT}","");
  367.             }
  368.  
  369.             if (imgpos<0) imgpos=0;
  370.             tImgPage.SetReplace("${IMAGETOP}",imgpos);
  371.             
  372.             // prev - next navigation
  373.             {
  374.                   var cNavigationText="";
  375.                   if (iFile>1)
  376.                     cNavigationText+="<a href=\""+GetImgPageFN(iFile-1)+"\">"+tNavPrev.Replace()+"</a>";
  377.                 else
  378.                     cNavigationText+=tNavPrev.Replace();
  379.                 //cNavigationText+="   ";
  380.                 cNavigationText+=" "+iFile+"/"+iFilesCount+" ";
  381.                 if (iFile<iFilesCount)
  382.                     cNavigationText+="<a href=\""+GetImgPageFN(iFile+1)+"\">"+tNavNext.Replace()+"</a>";
  383.                 else
  384.                     cNavigationText+=tNavNext.Replace();
  385.                 cNavigationText+="   ";
  386.                 cNavigationText+="<a href=\""+GetPageFN(cPage)+"\">"+tNavUp.Replace()+"</a>";
  387.                 tImgPage.SetReplace("${NAVIGATION}",cNavigationText);    
  388.             }
  389.             
  390.             // navigation with thumbnails
  391.             {
  392.                 var cNavigationText="";
  393.                 var iMin=iFile-2;
  394.                 if (iMin<1)
  395.                     iMin=1;
  396.                 var iMax=iFile+2;
  397.                 if (iMax>iFilesCount)
  398.                    iMax=iFilesCount;
  399.                     
  400.                 if (iMin==1 && iFilesCount>3)
  401.                 {
  402.                     iMax=5;
  403.                     if (iMax>iFilesCount) iMax=iFilesCount;
  404.                 }
  405.                 if (iMax==iFilesCount && iFilesCount>3)
  406.                 {
  407.                     iMin=iFilesCount-4;
  408.                     if (iMin<1) iMin=1;
  409.                 }                
  410.                 
  411.                 var tThmNavEntry = new CTemplate();
  412.                 tThmNavEntry.Load(cSourcePath + "thmnaventry.tpl", 0);
  413.                 var tThmNavEntryA = new CTemplate();
  414.                 tThmNavEntryA.Load(cSourcePath + "thmnaventrya.tpl", 0);
  415.                 for(var i=iMin;i<=iMax;i++)
  416.                 {
  417.                     var cThmNumFileName = IntToStr(i, 5);
  418.                          var cThmThnFileName = "thn" + cThmNumFileName + ".jpg";                
  419.                     if (i==iFile)
  420.                     {
  421.                         tThmNavEntryA.SetReplace("${IMGPAGEPATH}",GetImgPageFN(i));
  422.                         tThmNavEntryA.SetReplace("${THMNAME}",cThmThnFileName);
  423.                         cNavigationText+=tThmNavEntryA.Replace();                    
  424.                     }
  425.                     else
  426.                     { 
  427.                         tThmNavEntry.SetReplace("${IMGPAGEPATH}",GetImgPageFN(i));
  428.                         tThmNavEntry.SetReplace("${THMNAME}",cThmThnFileName);
  429.                         cNavigationText+=tThmNavEntry.Replace();
  430.                     }
  431.                 }
  432.                 tImgPage.SetReplace("${THMNAVIGATION}",cNavigationText);    
  433.             }
  434.             
  435.             // PHP COMMENTS
  436.             if (bUsePHP)
  437.             {
  438.               tCmtForm.SetReplace("${IMGFILENAME}",cImgPgId);
  439.               tImgPage.SetReplace("${COMMENTS}",tCmtForm.Replace());
  440.             }
  441.             else
  442.               tImgPage.SetReplace("${COMMENTS}","");
  443.             
  444.             SaveString(cDestPath + GetImgPageFN(iFile), tImgPage.Replace(), 0);
  445.                     
  446.         // ADD TO INDEX
  447.             tIndexEntry.SetReplace("${IMAGEPAGEPATH}",GetImgPageFN(iFile));
  448.             tIndexEntry.SetReplace("${THUMBNAILPATH}",cThnFileName);
  449.             tIndexEntry.SetReplace("${INDEXENTRYTEXT}",ReplaceExifStrings(thnDescription, cFileName, cDestPath + cImgFileName));
  450.             tIndexEntry.SetReplace("${IMGWIDTH}",iCurThmWidth);
  451.             tIndexEntry.SetReplace("${IMGHEIGHT}",iCurThmHeight);
  452.             
  453.             RowText+=tIndexEntry.Replace();
  454.         }
  455.         else
  456.         {
  457.             RowText+=tIndexEntryEmpty.Replace();
  458.         }
  459.         
  460.         cCol++;         
  461.         if (cCol==iCols)
  462.         {
  463.             cCol=0;
  464.             cRow++;                    
  465.             tIndexRow.SetReplace("${INDEXENTRIES}",RowText);
  466.             RowText="";
  467.             if (iFile - iFilesCount >= iCols)
  468.             {
  469.                 // do nothing - empty row
  470.             }
  471.             else
  472.                 RowsText+=tIndexRow.Replace();    
  473.         }
  474.         if (cRow==iRows)
  475.         {
  476.             cCol=0;
  477.             cRow=0;
  478.             tIndexPage.SetReplace("${INDEXROWS}",RowsText);
  479.             RowsText="";
  480.             // page counter will be incremented in next "if" section
  481.         }        
  482.     
  483.           iPos++;
  484.         if (iPos==iPerPage)
  485.         {
  486.             if (iFile <= iFilesCount)
  487.                 iPos=0;
  488.  
  489.             tIndexHeader.SetReplace("${PAGETITLE}", TitleText);
  490.             tIndexPage.SetReplace("${GALLERYTITLE}",TitleText);
  491.  
  492.  
  493.             if (DescriptionText=="") {
  494.                 tIndexPage.SetReplace("${GALLERYDESCRIPTION}","");
  495.             }
  496.             else
  497.             {
  498.                 var tDesc = new CTemplate();
  499.                 tDesc.Load(cSourcePath + "gallerydesc.tpl", 0);
  500.                 tDesc.SetReplace("${DESCRIPTIONHEADER}", iGalDescriptionHeader);
  501.                 tDesc.SetReplace("${DESCRIPTIONTEXT}", DescriptionText);
  502.                 tIndexPage.SetReplace("${GALLERYDESCRIPTION}",tDesc.Replace());
  503.             }                
  504.  
  505.             tIndexPage.SetReplace("${HEADER}",tIndexHeader.Replace());
  506.             var cNavigationText="";
  507.             if (cPage>1)
  508.                 cNavigationText+="<a href=\""+GetPageFN(cPage-1)+"\">"+tNavPrev.Replace()+"</a>";
  509.             else
  510.                 cNavigationText+=tNavPrev.Replace();
  511.             //cNavigationText+="   ";
  512.             cNavigationText+=" "+cPage+"/"+iPagesCount+" ";
  513.             if (cPage<iPagesCount)
  514.                 cNavigationText+="<a href=\""+GetPageFN(cPage+1)+"\">"+tNavNext.Replace()+"</a>";
  515.             else
  516.                 cNavigationText+=tNavNext.Replace();
  517.             cNavigationText+="   ";
  518.             if (pAlbum.bIsCurrentGalleryRootGallery)
  519.             {
  520.                 if (iBackRef==2)
  521.                 {
  522.                     cNavigationText+="<a href=\"../\">"+tNavUp.Replace()+"</a>";
  523.                 }
  524.                 else
  525.                     if (iBackRef==3)
  526.                     {
  527.                         cNavigationText+="<a href=\""+cBackRefURL+"\">"+tNavUp.Replace()+"</a>";
  528.                     }
  529.                     else
  530.                     {
  531.                         cNavigationText+=" ";
  532.                     }
  533.             }
  534.             else
  535.                 cNavigationText+="<a href=\"../\">"+tNavUp.Replace()+"</a>";
  536.             tIndexPage.SetReplace("${NAVIGATION}",cNavigationText);
  537.  
  538.             tFooter.SetReplace("${FOOTER_TEXT}", ReplaceExifStrings(txtFooter, "", ""));
  539.             tIndexPage.SetReplace("${FOOTER}",tFooter.Replace());
  540.  
  541.             SaveString(cDestPath + GetPageFN(cPage), tIndexPage.Replace(), 0);
  542.             cPage++;
  543.         }
  544.   }
  545.  
  546.   return cDestPath + GetPageFN(1);
  547. }
  548.  
  549. INIT_OK;
  550.